package com.itheima.mapper;

import com.itheima.entity.Emp;
import com.itheima.entity.EmpQueryParam;
import org.apache.ibatis.annotations.*;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;


@Mapper
public interface EmpMapper {
//    /**
//     * 员工总数
//     * @return
//     */
//    @Select("select count(*)from emp")
//    Long count();


//    /**
//     * 分页查询
//     * @param start
//     * @param pageSize
//     * @return
//     */
//    @Select("select e.*,d.name deptName from emp e left join dept d on d.id = e.dept_id limit #{start},#{pageSize}")
//    List<Emp> page(Integer start, Integer pageSize);

    /**
     * 列表查询
     * @return
     */
//    @Select("select e.*,d.name deptName from emp e left join dept d on d.id = e.dept_id")//用了插件，此处不能有分号
//    List<Emp> list();

    //基于xml的动态sql语句
    List<Emp> list(EmpQueryParam param);

    /**
     * 新增员工基本信息
     * @param emp
     */
    @Options(useGeneratedKeys = true,keyProperty = "id")//获取主键的值赋给id属性
    @Insert("insert into emp values (null,#{username},#{password},#{name},#{gender},#{phone},#{job}," +
            "#{salary},#{image},#{entryDate},#{deptId},#{createTime},#{updateTime})")
    void insert(Emp emp);

    /**
     * 批量删除员工基本信息
     * @param ids
     */
    //基于XML开发--动态SQL--foreach
    void deleteBatch(List<Integer> ids);

    /**
     * 获取员工基本信息和经历列表信息
     * @return
     */
    Emp getById(Integer id);


    /**
     * 统计各职位员工人数
     * @return
     */
    @MapKey("pos")  //可以不加，不影响业务...
    List<Map> countByJob();

    @MapKey("name")
    List<Map> countByGender();
}









